package com.mzx.javase.集合.泛型;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;

/**
 * 类描述：泛型的使用
 * 在java中,有时候类/接口/方法,在接收参数时,为了确定某种类型,所以使用了泛型机制.
 * object也能传递参数,为什么不使用object呢?
 *  object在使用的过程中,需要接受参数的类型进行强转,效率低下,且容易产生错误
 * @ClassName FanXingTest01
 * @Description TODO
 * @Author 69417
 * @Date 2022/7/3 16:55
 * @Version 1.0
 */
public class FanXingUseTest01 {
    public static void main(String[] args) {
        //Collection在不使用泛型的情况下
        Collection c = new ArrayList(10);
        c.add("1");
        c.add(true);
        c.add("hello");
        Iterator iterator = c.iterator();
        while (iterator.hasNext()) {
            Object next = iterator.next();
            //不使用泛型时,用object进行参数转换,效率低下
            if (next instanceof String) {
                System.out.println(next);
            } else if (next instanceof Boolean) {
                System.out.println(next);
            }
        }

        //使用泛型
        Collection<String> c1 = new LinkedList<>();//linkedList初始化不需要有容量参数
        //确定了集合中装的泛型元素,只能存放这一种数据-->String类型的数据
        c1.add("hello");
        c1.add("world");
        Iterator<String> iterator1 = c1.iterator();
        while (iterator1.hasNext()) {
            String next = iterator1.next();
            System.out.println(next);
        }
    }
}
